﻿using HuiLian.Common.Input;
using HuiLian.Common.Output;
using HuiLian.Model.Platform;
using HuiLian.Service.Platform.Document.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HuiLian.Service.Platform.Document
{
    public partial interface IDocumentService
    {
        Task<IResponseOutput> GetAsync(long id);

        Task<IResponseOutput> GetImageListAsync(long id);

        Task<IResponseOutput> GetGroupAsync(long id);

        Task<IResponseOutput> GetMenuAsync(long id);

        Task<IResponseOutput> GetContentAsync(long id);
        Task<IResponseOutput> GetHtmlAsync(long id);

        Task<IResponseOutput> GetPlainListAsync();

        Task<IResponseOutput> GetPlainListAsync(long parentId);

        Task<IResponseOutput> GetListByParentAsync(long parentId);

        Task<IResponseOutput> GetListAsync(string key, DateTime? start, DateTime? end);

        Task<IResponseOutput> GetListBySelfAsync(List<long> ids);

        Task<IResponseOutput> AddGroupAsync(DocumentAddGroupInput input);

        Task<IResponseOutput> AddMenuAsync(DocumentAddMenuInput input);

        Task<IResponseOutput> AddImageAsync(DocumentAddImageInput input);

        Task<IResponseOutput> UpdateGroupAsync(DocumentUpdateGroupInput input);

        Task<IResponseOutput> UpdateMenuAsync(DocumentUpdateMenuInput input);

        Task<IResponseOutput> UpdateContentAsync(DocumentUpdateContentInput input);

        Task<IResponseOutput> DeleteAsync(long id);

        Task<IResponseOutput> DeleteImageAsync(long documentId, string url);

        Task<IResponseOutput> SoftDeleteAsync(long id);

        Task<string> GetChineseDistricts();

        Task<IResponseOutput> GetImageListByDocumentIdAsync(long documentId);

        Task<IResponseOutput> AddDocumentAsync(AddDocumentInput input);

        Task<IResponseOutput> UpdateDocumentAsync(UpdateDocumentInput input);

        Task<IResponseOutput> SoftDeleteDocumentAsync(long id);

        Task<IResponseOutput> PageAsync(PageInput<DocumentEntity> input);

    }
}
